/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.notaria.guerrasalas.bc;

import com.notaria.guerrasalas.be.EstadoEntidad;
import com.notaria.guerrasalas.be.Servicio;
import com.notaria.guerrasalas.be.TipoServicio;
import gob.satt.comun.jpa.Command;
import java.util.List;
import javax.persistence.EntityManager;
import oracle.toplink.essentials.config.HintValues;
import oracle.toplink.essentials.config.TopLinkQueryHints;

/**
 *
 * @author Administrador
 */
public class ListarServiciosPorEstadoYTipoCommand implements Command<List<Servicio>> {

    private EstadoEntidad estado;
    private TipoServicio tipo;

    public ListarServiciosPorEstadoYTipoCommand(EstadoEntidad estado, TipoServicio tipo) {
        this.estado = estado;
        this.tipo = tipo;
    }

    @Override
    public List<Servicio> execute(EntityManager em) throws Exception {
        List<Servicio> servicios = null;
        servicios = (List<Servicio>) em.createNamedQuery("Servicio.findByEstadoYTipo")
                    .setParameter("tipo", tipo.equals(TipoServicio.Kardex) ? TipoServicio.Ticket : TipoServicio.Kardex)
                    .setParameter("estado", estado)
                    .setHint(TopLinkQueryHints.REFRESH, HintValues.TRUE)
                    .getResultList();
        return servicios;
    }
}
